package com.hejielife.chainresponsibility;

/**
 * <hr>
 * 责任链模式:<br>
 * 使多个对象都有机会处理请求，从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链， 并沿着这条链传递该请求，直到有一个对象处理它为止。<br>
 * 这一模式的想法是，给多个对象处理一个请求的机会，从而解耦发送者和接受者.
 * <hr>
 * 适用性 :<br>
 * 1.有多个的对象可以处理一个请求，哪个对象处理该请求运行时刻自动确定。 <br>
 * 2.你想在不明确指定接收者的情况下，向多个对象中的一个提交一个请求。 <br>
 * 3.可处理一个请求的对象集合应被动态指定。
 */
public class Client {

	public static void main(String[] args) {
		// 声明出所有的处理节点
		Handler handler1 = new ConcreteHandler1();
		Handler handler2 = new ConcreteHandler2();
		Handler handler3 = new ConcreteHandler3();
		// 设置链中的阶段顺序,1-->2-->3
		handler1.setNext(handler2);
		handler2.setNext(handler3);
		// 提交请求，返回结果
		Response response = handler1.handlerMessage(new Request());
	}

}